package com.southminority.ethnic.controller.heritage.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;

/**
 * 非遗项目视图对象
 * 用于前端数据传输
 * 
 * @author SouthMinority
 */
@Data
@Schema(description = "非物质文化遗产项目视图对象")
public class HeritageVO {

    @Schema(description = "非遗项目ID", example = "1")
    private Long id;

    @Schema(description = "项目名称", example = "苗族古歌")
    private String title;

    @Schema(description = "非遗类型", example = "民间文学")
    private String heritageType;

    @Schema(description = "级别", example = "国家级")
    private String level;

    @Schema(description = "批准文号", example = "国发〔2006〕18号")
    private String approvalNumber;

    @Schema(description = "批准日期", example = "2006-05-20")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date approvalDate;

    @Schema(description = "所属地区", example = "贵州省黔东南苗族侗族自治州")
    private String region;

    @Schema(description = "所属民族", example = "苗族")
    private String ethnicGroup;

    @Schema(description = "项目简介", example = "苗族古歌是苗族古代社会历史的百科全书...")
    private String description;

    @Schema(description = "历史背景", example = "苗族古歌源远流长，最早可追溯到上古时期...")
    private String historicalBackground;

    @Schema(description = "文化价值", example = "具有极高的历史学、民族学、文学艺术价值...")
    private String culturalValue;

    @Schema(description = "现状", example = "目前，苗族古歌的传承面临一定的挑战...")
    private String currentStatus;

    @Schema(description = "保护措施", example = "已建立多级保护名录，并有多位国家级传承人...")
    private String protectionMeasures;

    @Schema(description = "传承方式", example = "主要通过师徒传承、家族传承等方式口传心授...")
    private String transmissionMethods;

    @Schema(description = "主要特征", example = "内容宏大，结构复杂，篇幅浩繁...")
    private String mainFeatures;

    @Schema(description = "相关习俗", example = "常在重大节日、婚丧嫁娶、祭祀等场合演唱...")
    private String relatedCustoms;

    @Schema(description = "关键词，以逗号分隔", example = "苗族,史诗,神话,非遗")
    private String keywords;

    @Schema(description = "标签列表")
    private List<String> tagList;

    @Schema(description = "封面图片URL", example = "http://example.com/cover.jpg")
    private String coverImage;

    @Schema(description = "图片URL列表")
    private List<String> images;

    @Schema(description = "视频URL列表")
    private List<String> videos;

    @Schema(description = "音频URL列表")
    private List<String> audios;

    @Schema(description = "浏览次数", example = "1024")
    private Integer viewCount;

    @Schema(description = "状态", example = "1", allowableValues = {"1", "0", "-1"})
    private Integer status;

    @Schema(description = "创建时间")
    private LocalDateTime createTime;

    @Schema(description = "更新时间")
    private LocalDateTime updateTime;

    @Schema(description = "该非遗项目下的传承人列表")
    private List<InheritorVO> inheritors;

    @Schema(description = "关联的相关研究成果链接")
    private List<HeritageResearchLinkVO> researchLinks;
} 